home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / glibc108.gz / glibc108 / glibc-1.08.1 / stdio / test-fseek.c < prev    next >
C/C++ Source or Header  |  1992-07-01  |  1KB  |  68 lines

  1. #include <ansidecl.h>
  2. #include <stdio.h>
  3.  
  4. #define TESTFILE "test.dat"
  5.  
  6. int
  7. main __P((void))
  8. {
  9.   FILE *fp;
  10.   int i, j;
  11.  
  12.   puts ("\nFile seek test");
  13.   fp = fopen (TESTFILE, "w");
  14.   if (fp == NULL)
  15.     {
  16.       perror (TESTFILE);
  17.       return 1;
  18.     }
  19.  
  20.   for (i = 0; i < 256; i++)
  21.     putc (i, fp);
  22.   if (freopen (TESTFILE, "r", fp) != fp)
  23.     {
  24.       perror ("Cannot open file for reading");
  25.       return 1;
  26.     }
  27.  
  28.   for (i = 1; i <= 255; i++)
  29.     {
  30.       printf ("%3d\n", i);
  31.       fseek (fp, (long) -i, SEEK_END);
  32.       if ((j = getc (fp)) != 256 - i)
  33.     {
  34.       printf ("SEEK_END failed %d\n", j);
  35.       break;
  36.     }
  37.       if (fseek (fp, (long) i, SEEK_SET))
  38.     {
  39.       puts ("Cannot SEEK_SET");
  40.       break;
  41.     }
  42.       if ((j = getc (fp)) != i)
  43.     {
  44.       printf ("SEEK_SET failed %d\n", j);
  45.       break;
  46.     }
  47.       if (fseek (fp, (long) i, SEEK_SET))
  48.     {
  49.       puts ("Cannot SEEK_SET");
  50.       break;
  51.     }
  52.       if (fseek (fp, (long) (i >= 128 ? -128 : 128), SEEK_CUR))
  53.     {
  54.       puts ("Cannot SEEK_CUR");
  55.       break;
  56.     }
  57.       if ((j = getc (fp)) != (i >= 128 ? i - 128 : i + 128))
  58.     {
  59.       printf ("SEEK_CUR failed %d\n", j);
  60.       break;
  61.     }
  62.     }
  63.   fclose (fp);
  64.  
  65.   puts ((i > 255) ? "Test succeeded." : "Test FAILED!");
  66.   return (i > 255) ? 0 : 1;
  67. }
  68.